AWS Cloud Control API を利用したAWSリソース操作をCLIで試してみた
AWSチームのすずきです。
2021年9月30日のアップデートでサポートされた AWS Cloud Control API。 AWS CLI を利用した AWSリソースの操作(作成、表示、削除)を試す機会がありましたので、紹介させていただきます。
AWS Cloud Control API, a Uniform API to Access AWS & Third-Party Services
実行環境
- OS: Amazon Linux 2 (x86_64)
- aws-cli: 2.2.43
$ aws --version aws-cli/2.2.43 Python/3.8.8 Linux/4.14.243-185.433.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off
- awscliインストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
Cloud Control API
AWS Cloud Control API がサポートする Kinesis Data Streams を操作対象としました。
リソース作成
$ aws cloudcontrol create-resource \ --type-name AWS::Kinesis::Stream \ --desired-state "{\"Tags\":[{\"Value\":\"01\",\"Key\":\"tag1\"}],\"Name\":\"stream01\",\"ShardCount\":1}" { "ProgressEvent": { "TypeName": "AWS::Kinesis::Stream", "Identifier": "stream01", "RequestToken": "00000000-0000-0000-0000-000000000000", "Operation": "CREATE", "OperationStatus": "IN_PROGRESS", "EventTime": "2021-10-01T12:52:41.469000+00:00" } }
リソース表示
$ aws cloudcontrol list-resources --type-name AWS::Kinesis::Stream { "TypeName": "AWS::Kinesis::Stream", "ResourceDescriptions": [ { "Identifier": "stream01", "Properties": "{\"Name\":\"stream01\"}" } ] }
$ aws cloudcontrol get-resource --type-name AWS::Kinesis::Stream --identifier stream01 { "TypeName": "AWS::Kinesis::Stream", "ResourceDescription": { "Identifier": "stream01", "Properties": "{\"Arn\":\"arn:aws:kinesis:ap-northeast-1:000000000000:stream/stream01\",\"RetentionPeriodHours\":24,\"Tags\":[{\"Value\":\"01\",\"Key\":\"tag1\"}],\"Name\":\"stream01\",\"ShardCount\":1}" } }
リソース削除
$ aws cloudcontrol delete-resource --type-name AWS::Kinesis::Stream --identifier stream01 { "ProgressEvent": { "TypeName": "AWS::Kinesis::Stream", "Identifier": "stream01", "RequestToken": "00000000-0000-0000-0000-000000000000", "Operation": "DELETE", "OperationStatus": "IN_PROGRESS", "EventTime": "2021-10-01T12:56:54.190000+00:00" } }
従来API
Amazon Kinesis Data Streams API では、2回のAPI操作が必要でした。
Amazon Kinesis Data Streams Service API Reference
作成
create-stream
aws kinesis create-stream --stream-name stream02 --shard-count 1
add-tags-to-stream
aws kinesis add-tags-to-stream --stream-name stream02 --tags tag1=02
表示
describe-stream
$ aws kinesis describe-stream --stream-name stream02 { "StreamDescription": { "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "StartingHashKey": "0", "EndingHashKey": "340282366920938463463374607431768211455" }, "SequenceNumberRange": { "StartingSequenceNumber": "49622564398159323166478361687972732299177258526353391618" } } ], "StreamARN": "arn:aws:kinesis:ap-northeast-1:000000000000:stream/stream02", "StreamName": "stream02", "StreamStatus": "ACTIVE", "RetentionPeriodHours": 24, "EnhancedMonitoring": [ { "ShardLevelMetrics": [] } ], "EncryptionType": "NONE", "KeyId": null, "StreamCreationTimestamp": "2021-10-01T12:58:25+00:00" } }
list-tags-for-stream
$ aws kinesis list-tags-for-stream --stream-name stream02 { "Tags": [ { "Key": "tag1", "Value": "02" } ], "HasMoreTags": false }
まとめ
AWSサービスのAPI、各サービス毎に差異が存在する事がありますが、 Cloud Control API を利用する事で、作成、参照、変更、削除 基本的なリソース操作の共通化が可能になりました。
特にAWSリソースの管理にタグを活用しているシステムでは、嬉しいアップデートかと思われます。
Cloud Control API は90以上のサービスをサポートしますが、
2021年10月時点では、AWS::EC2::Instance
、AWS::RDS::DBInstance
など未サポートのリソースも存在します。
今後 のサポート対象の追加は期待できると思われますが、 Cloud Control APIを利用する場合、まず最新の公式ドキュメントで操作対象のリソースのサポート状況を確認する事をおすすめします。
Resource types that support Cloud Control API
Cloud Control API 対象サービス
2021年9月30日時点
- Amazon API Gateway
- Amazon AppFlow
- Amazon Athena
- Amazon CloudFront
- Amazon CloudWatch
- Amazon CodeGuru Profiler
- Amazon CodeGuru Reviewer
- Amazon Connect
- Amazon Detective
- Amazon DevOps Guru
- Amazon DynamoDB
- Amazon EC2
- Amazon EC2 Auto Scaling
- Amazon ECR
- Amazon ECS
- Amazon EFS
- Amazon EKS
- Amazon ElastiCache
- Amazon EMR
- Amazon EMR
- Amazon EventBridge
- Amazon FinSpace
- Amazon Fraud Detector
- Amazon GameLift
- Amazon HealthLake
- Amazon Interactive Video Service
- Amazon Kendra
- Amazon Keyspaces (for Apache Cassandra)
- Amazon Kinesis
- Amazon Kinesis Data Firehose
- Amazon Location Service
- Amazon Lookout for Equipment
- Amazon Lookout for Metrics
- Amazon Lookout for Vision
- Amazon Macie
- Amazon Managed Service for Prometheus
- Amazon Managed Workflows for Apache Airflow (Amazon MWAA)
- Amazon Nimble Studio
- Amazon OpenSearch Service
- Amazon QLDB
- Amazon QuickSight
- Amazon Redshift
- Amazon Relational Database Service
- Amazon Route 53
- Amazon SageMaker
- Amazon Simple Email Service
- Amazon Simple Storage Service
- Amazon Timestream
- AWS Amplify
- AWS App Runner
- AWS Audit Manager
- AWS Backup
- AWS Billing and Cost Management
- AWS Budgets
- AWS Certificate Manager
- AWS Chatbot
- AWS CloudFormation
- AWS CloudTrail
- AWS CodeArtifact
- AWS CodeStar
- AWS Config
- AWS DataSync
- AWS Elemental MediaConnect
- AWS Elemental MediaPackage
- AWS Firewall Manager
- AWS FIS
- AWS Global Accelerator
- AWS Glue
- AWS Glue DataBrew
- AWS Ground Station
- AWS Identity and Access Management
- AWS IoT Core
- AWS IoT Events
- AWS IoT Greengrass
- AWS IoT SiteWise
- AWS Key Management Service
- AWS Lambda
- AWS License Manager
- AWS Network Firewall
- AWS OpsWorks CM
- AWS Resource Groups
- AWS RoboMaker
- AWS Service Catalog
- AWS Signer
- AWS Single Sign-On
- AWS Step Functions
- AWS Systems Manager
- AWS WAF
- AWS X-Ray
- EC2 Image Builder
- Elastic Load Balancing
- Transit Gateway Network Manager